"""
完成一个员工管理系统，主要功能有：新增员工，修改员工，删除员工，员工查找，数据统计，排序（选做）。
要求为：
（1）员工信息有：工号，姓名，性别，年龄，工资
（2）按照工号，工资进行排序（选做）
（3）数据统计功能中，统计平均工资，最高工资，最低工资
"""
# 员工管理系统
# 员工列表
Emps =[{"nu":1,"name":"xixi","sex":"man","age":"35","salary":"8k"},
        {"nu":2,"name":"bingbing","sex":"man","age":"30","salary":"7k"},
        {"nu":3,"name":"fangfang","sex":"woman","age":"36","salary":"6k"}]

#新增员工
def do_insert():
    emp_nu = input("请输入员工工号：")
    emp_name = input("请输入员工姓名：")
    emp_sex = input("请输入员工性别：")
    emp_age = input("请输入员工年龄：")
    emp_salary = input("请输入员工薪资：")

    emp = [emp_nu, emp_name, emp_sex, emp_age, emp_salary]
    Emps.append(emp)
    print("恭喜，新增成功")

#修改员工
def do_update():
    updateid=int(input("请输入需要修改员工的工号："))
    for i in Emps:
        if(i["nu"])==updateid:
            i["name"]=int (input("请输入新的姓名："))
            i["sex"]=int (input("请输入新的性别："))
            i["age"]=int (input("请输入新的年龄："))
            i["salary"]=int (input("请输入新的薪资："))
            print("恭喜，修改成功")
            break
    else:
        print("未找到需要修改的员工")

#删除员工
def do_delete():
    delete=int (input("请输入需要删除的员工的工号："))
    n=0
    for a in Emps:
        if(a["id"])==delete:
            Emps.pop(n)
            print("恭喜，删除成功")
            break
            n=n+1
        else:
            print("未找到需要删除的员工")

# 根据员工姓名查询员工信息
def do_query():
    emp_no = input("请输入您要查询员工的工号：")
    all_no = list(Emps.keys())
    if emp_no not in all_no:
        print("\033[31m该员工工号不存在，不能进行查询!\033[0m")
        return do_query()
    else:
        print(Emps[emp_no])

#数据统计 平均工资 最高工资 最低工资
def do_statistic():
    i = 0
    j = 0
    for v in Emps.values():
        i = i + v['salary']
        j = j + 1
    i = i / j
    print("平均工资为：", i)

    maxx = max(Emps, key=lambda v: Emps[v]['salary'])
    minn = min(Emps, key=lambda v: Emps[v]['salary'])
    print("工资最高的是：", Emps[maxx])
    print("工资最低的是：", Emps[minn])


def do_sort():
    print("1-工资顺序-(输入数字1)")
    print("2-工资逆序-(输入数字2)")
    print("3-年龄顺序-(输入数字3)")
    print("4-年龄逆序-(输入数字4)")

    function_num = int(input("请输入您的操作："))
    print("\033[33m*\033[0m" * 40)
    if function_num == 1:
        sal_sort()

    elif function_num == 2:
        sal_rsort()

    elif function_num == 3:
        age_sort()

    elif function_num == 4:
        age_rsort()

    else:
        print("您的输入有误，请重新输入")
        print("\033[33m*\033[0m" * 40)
        return do_sort()

def sal_sort():
    sort = sorted(Emps.items(), key=lambda x: x[1]['salary'])
    print("按工资从小到大排序:")
    for d in sort:
        print(d)


def sal_rsort():
    rsort = sorted(Emps.items(), reverse=True, key=lambda x: x[1]['salary'])
    print("按工资从大到小排序:")
    for d in rsort:
        print(d)


def age_sort():
    sort = sorted(Emps.items(), key=lambda x: x[1]['age'])
    print("按年龄从小到大排序:")
    for d in sort:
        print(d)


def age_rsort():
    rsort = sorted(Emps.items(), reverse=True, key=lambda x: x[1]['age'])
    print("按年龄从大到小排序:")
    for d in rsort:
        print(d)


# 全体员工信息
def do_search():
    for v in Emps.items():  # 遍历它的值
        print(v)
    print("员工总数为：", len(Emps))

# 导航菜单
def menu():
    print("1_新增员工—（输入数字1）")
    print("2_修改员工—（输入数字2）")
    print("3_删除员工—（输入数字3）")
    print("4_查找员工—（输入数字4）")
    print("5_数据统计—（输入数字5）")
    print("6_排序—（输入数字6）")

    function_num = int(input("请选择功能"))

    if function_num == 1:
        print("欢迎使用新增员工功能")
        do_insert()


    elif function_num == 2:
        print("欢迎使用修改员工功能")
        do_update()


    elif function_num == 3:
        print("欢迎使用删除员工功能")
        do_delete()


    elif function_num == 4:
        print("欢迎使用查找员工功能")
        do_query()


    elif function_num == 5:
        print("欢迎使用数据统计功能")
        do_statistic()


    elif function_num == 6:
        print("欢迎使用排序功能")
        do_sort()
    else:
        print("请选择正确的功能")
if __name__ == '__main__':
    while 1:
        menu()
        print("------------------------------------")
